﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CRMBussines
{
    public partial class CrmBussines : IDisposable
    {
        public List<Prospecto> ObtenProspectos()
        {
            List<Prospecto> res = new List<Prospecto>();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            var pros = (from pro in db.Prospectos select pro);
            res = pros.ToList<Prospecto>();

            return res;
        }

        public IQueryable<ResultadoProspectos> ObtenProspectosCompleto()
        {


            db = new CRMModelControladorDataContext(_cadenaConexion);

            IQueryable<ResultadoProspectos> res = (from x in db.Prospectos                                                      
                                                      select new ResultadoProspectos()
                                                      {
                                                            ProspectosId = x.ProspectosId,
                                                            Codigo =  x.Codigo,
                                                            Nombre_Comercial = x.Nombre_Comercial,
                                                            Nombre = x.Nombre,
                                                            Conmutador = x.Conmutador,
                                                            PaginaWeb = x.PaginaWeb,
                                                            Calle = x.Calle,
                                                            Colonia = x.Colonia,
                                                            Cp = x.Cp,
                                                            Email = x.Email,
                                                            Comentarios = x.Comentarios,
                                                            Fecha_Alta = x.Fecha_Alta,
                                                            SubSectoresId = x.SubSectoresId,
                                                            TamanosId = x.TamanosId,
                                                            ZonasId = x.ZonasId,
                                                            UsuariosId = x.UsuariosId, 
                                                            CiudadPaisId = x.CiudadPaisId,
                                                            MunicipioPaisId = x.MunicipioPaisId,
                                                            EstadoPaisId = x.EstadoPaisId,
                                                            SubSector = x.SubSectore.Descripcion,
                                                            Tamano = x.Tamano.Descripcion,
                                                            Zona = x.Zona.Descripcion,
                                                            Usuario = x.Usuario.Nombre,
                                                            Ciudad = x.CiudadPai.Nombre,
                                                            Municipio = x.MunicipioPai.Nombre,
                                                            Estado = x.EstadoPai.Nombre 
                                                      }
                                            );


            return res;
        }

        public Prospecto ObtenProspecto(int id)
        {
            Prospecto de = new Prospecto();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            de = db.Prospectos.Single(c => c.ProspectosId == id);

            return de;
        }

        public void GuardaProspecto(Prospecto prospecto)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            prospecto.UsuariosId = _usuarioFirmado.UsuariosId;
            prospecto.Fecha_Alta = DateTime.Now;
            db.Prospectos.InsertOnSubmit(prospecto);
            db.SubmitChanges();
        }

        public void ActualizaProspecto(Prospecto prospecto)
        {
            Prospecto pro = new Prospecto();
            db = new CRMModelControladorDataContext(_cadenaConexion);
            pro = db.Prospectos.Single(c => c.ProspectosId == prospecto.ProspectosId);            
            pro.Codigo = prospecto.Codigo;
            pro.Nombre_Comercial = prospecto.Nombre_Comercial;
            pro.Nombre = prospecto.Nombre;
            pro.Conmutador = prospecto.Conmutador;
            pro.PaginaWeb = prospecto.PaginaWeb;
            pro.Calle = prospecto.Calle;
            pro.Colonia = prospecto.Colonia;
            pro.Cp = prospecto.Cp;
            pro.Email = prospecto.Email;
            pro.Comentarios = prospecto.Comentarios;
            //pro.Fecha_Alta = prospecto.Fecha_Alta;
            pro.SubSectoresId = prospecto.SubSectoresId;
            pro.TamanosId = prospecto.TamanosId;
            pro.ZonasId = prospecto.ZonasId;
            pro.UsuariosId = _usuarioFirmado.UsuariosId;
            pro.CiudadPaisId = prospecto.CiudadPaisId;
            pro.MunicipioPaisId = prospecto.MunicipioPaisId;
            pro.EstadoPaisId = prospecto.EstadoPaisId;

            db.SubmitChanges();
        }

        public void EliminaProspecto(int id)
        {            
            Prospecto pros = new Prospecto();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            pros = db.Prospectos.Single(c => c.ProspectosId == id);
            db.Prospectos.DeleteOnSubmit(pros);
            db.SubmitChanges();
        }


        public IQueryable<ResultadoContactos> ObtenContactos(int id)
        {


            db = new CRMModelControladorDataContext(_cadenaConexion);

            IQueryable<ResultadoContactos> res = (from x in db.Contactos
                                                      where x.ProspectosId == id
                                                        select new ResultadoContactos()
                                                      {
                                                            ContactosId = x.ContactosId,
                                                            Nombre = x.Nombre,
                                                            Correo = x.Correo,
                                                            Telefono = x.Telefono,
                                                            Extencion = x.Extencion, 
                                                            Puesto = x.Puesto, 
                                                            ProspectosId = x.ProspectosId,
                                                            UsuariosId = x.UsuariosId,
                                                            Prospecto = x.Prospecto.Nombre,
                                                            Usuario = x.Usuario.Nombre
                                                      }
                                            );


            return res;
        }

        public Contacto ObtenContacto(int id)
        {
            Contacto de = new Contacto();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            de = db.Contactos.Single(c => c.ContactosId == id);

            return de;
        }

        public void GuardaContacto(Contacto contacto)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            contacto.UsuariosId = _usuarioFirmado.UsuariosId;
            db.Contactos.InsertOnSubmit(contacto);
            db.SubmitChanges();
        }

        public void ActualizaContacto(Contacto contacto)
        {            
            Contacto cont = new Contacto();
            db = new CRMModelControladorDataContext(_cadenaConexion);
            cont = db.Contactos.Single(c => c.ContactosId == contacto.ContactosId);
            cont.Nombre = contacto.Nombre;
            cont.Correo = contacto.Correo;
            cont.Telefono = contacto.Telefono;
            cont.Extencion = contacto.Extencion;
            cont.Puesto = contacto.Puesto;
            cont.ProspectosId = contacto.ProspectosId;
            //cont.UsuariosId = contacto.UsuariosId;
            db.SubmitChanges();
        }

        public void EliminaContacto(int id)
        {
            Contacto con = new Contacto();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            con = db.Contactos.Single(c => c.ContactosId == id);
            db.Contactos.DeleteOnSubmit(con);
            db.SubmitChanges();
        }   
    }

    public class ResultadoProspectos
    {
        public int ProspectosId {get; set;}
        public string Codigo {get; set;}
        public string Nombre_Comercial {get; set;}
        public string Nombre {get; set;}
        public string Conmutador {get; set;}
        public string PaginaWeb {get; set;}
        public string Calle {get; set;}
        public string Colonia {get; set;}
        public string Cp {get; set;}
        public string Email { get; set; }
        public string Comentarios {get; set;}
        public DateTime? Fecha_Alta {get; set;}
        public string SubSector { get; set; }
        public string Tamano { get; set; }
        public string Zona { get; set; }
        public string Usuario { get; set; }
        public string Ciudad { get; set; }
        public string Municipio { get; set; }
        public string Estado { get; set; }
        public int SubSectoresId {get; set;}
        public int TamanosId {get; set;}
        public int ZonasId {get; set;}
        public int UsuariosId {get; set;}
        public int CiudadPaisId {get; set;}
        public int MunicipioPaisId {get; set;}
        public int EstadoPaisId { get; set; }
    }

    public class ResultadoContactos
    {
        public int ContactosId {get; set;}
        public string Nombre {get;set;}
        public string Correo {get; set;}
        public string Telefono {get; set;}
        public string Extencion {get; set;}
        public string Puesto {get; set;}
        public int ProspectosId {get; set;}
        public int UsuariosId { get; set; }
        public string Prospecto { get; set; }
        public string Usuario { get; set; }
    }
}
